/*
 *
 *    Copyright (c) 2022 Project CHIP Authors
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

// THIS FILE IS GENERATED BY ZAP
// This file is generated from clusters-Enums-Check.h.zapt

#pragma once

#include <clusters/TimeSynchronization/Enums.h>

namespace chip
{
namespace app
{
	namespace Clusters
	{
		static auto __attribute__((unused)) EnsureKnownEnumValue(TimeSynchronization::GranularityEnum val)
		{
			using EnumType = TimeSynchronization::GranularityEnum;
			switch (val) {
			case EnumType::kNoTimeGranularity:
			case EnumType::kMinutesGranularity:
			case EnumType::kSecondsGranularity:
			case EnumType::kMillisecondsGranularity:
			case EnumType::kMicrosecondsGranularity:
				return val;
			default:
				return EnumType::kUnknownEnumValue;
			}
		}
		static auto __attribute__((unused)) EnsureKnownEnumValue(TimeSynchronization::StatusCode val)
		{
			using EnumType = TimeSynchronization::StatusCode;
			switch (val) {
			case EnumType::kTimeNotAccepted:
				return val;
			default:
				return EnumType::kUnknownEnumValue;
			}
		}
		static auto __attribute__((unused)) EnsureKnownEnumValue(TimeSynchronization::TimeSourceEnum val)
		{
			using EnumType = TimeSynchronization::TimeSourceEnum;
			switch (val) {
			case EnumType::kNone:
			case EnumType::kUnknown:
			case EnumType::kAdmin:
			case EnumType::kNodeTimeCluster:
			case EnumType::kNonMatterSNTP:
			case EnumType::kNonMatterNTP:
			case EnumType::kMatterSNTP:
			case EnumType::kMatterNTP:
			case EnumType::kMixedNTP:
			case EnumType::kNonMatterSNTPNTS:
			case EnumType::kNonMatterNTPNTS:
			case EnumType::kMatterSNTPNTS:
			case EnumType::kMatterNTPNTS:
			case EnumType::kMixedNTPNTS:
			case EnumType::kCloudSource:
			case EnumType::kPtp:
			case EnumType::kGnss:
				return val;
			default:
				return EnumType::kUnknownEnumValue;
			}
		}
		static auto __attribute__((unused)) EnsureKnownEnumValue(TimeSynchronization::TimeZoneDatabaseEnum val)
		{
			using EnumType = TimeSynchronization::TimeZoneDatabaseEnum;
			switch (val) {
			case EnumType::kFull:
			case EnumType::kPartial:
			case EnumType::kNone:
				return val;
			default:
				return EnumType::kUnknownEnumValue;
			}
		}
	} // namespace Clusters
} // namespace app
} // namespace chip
